package fr.blogger.ejb.facade;

import java.util.Calendar;
import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import fr.blogger.ejb.model.News;
import fr.blogger.ejb.model.News_;
import fr.blogger.ejb.outils.enumeration.TypeModificationEnum;

@Named
@Stateless
public class NewsFacade extends AbstractFacade<News> {
	
	//TODO : A supprimer quand utilisateur en session sera ajouté
	@Inject
	private UtilisateurFacade utilisateurFacade;

	public List<News> findAllNewsOrderByDateCreation() {
		CriteriaQuery query = initQuery();
		Root news = query.from(entityClass);
		query.orderBy(builder().desc(news.get(News_.dateCreation)));
		return em.createQuery(query).getResultList();
	}

	public News editerNews(News news, TypeModificationEnum typeModification) {
		switch (typeModification) {
		case creation:
			news.setDateCreation(Calendar.getInstance().getTime());
			
			// TODO : A changer pour ajouter l'utilisateur en session
			news.setUtilisateur(utilisateurFacade.find(1));
			
			break;
		case modification:
			news.setDateDerniereModification(Calendar.getInstance().getTime());
			break;
		default:
			break;
		}
		return update(news);
	}

}
